/**
 * 
 */
package cc.monggo.demo.io;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

/**
 * @author fangjinsong
 * ByteArrayOutputStream,
 * 
 * 一个输出流，是存储数据的对象，该对象维护了一个字节数组，
 * 这个字节数组可以非常大，实现缓存。
 * 它是一个输出流,一般作为缓冲区
 * 
 * 输出流一般做法：
 * 1.先得到某个输出流
 * 2.再通过write方法将指定的数据写入到该输出流
 * 3.调用该输出流对象的flush，close方法
 *
 */
public class ByteArrayOutputStreamDemo {

	/**
	 * @param args
	 * @throws Exception 
	 */
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		ByteArrayOutputStreamDemo demo = new ByteArrayOutputStreamDemo();
		demo.writeToMe();
		
	}
	
	/**
	 * write()方法
	 * @throws IOException
	 */
	public void writeToMe() throws IOException{
		ByteArrayOutputStream buffer = new ByteArrayOutputStream();
		//1.形成一个源数据
		String sourceS = "abc";
		buffer.write(sourceS.getBytes(), 0, sourceS.length());//此后buffer中有了数据
		buffer.write(" def".getBytes());
		buffer.write(65); //这里的字节是字符的ASCII码
		
		//2.输出buffer中的数据
		System.out.println(buffer.toString());
	}
	
	/**
	 * writeTo
	 * @throws IOException
	 */
	public void writeToOutputStream() throws IOException{
		ByteArrayOutputStream buffer = new ByteArrayOutputStream();
		//1.形成一个源数据
		String sourceS = "abc";
		buffer.write(sourceS.getBytes(), 0, sourceS.length());//此后buffer中有了数据
		
		//2.将buffer中的数据写入一个OutputStream对象，这里是System.out对象
		buffer.writeTo(System.out);
		System.out.println();
	}

}
